
int main()
{
    const double pi = 3.14;         // pi 是个常量，它的值不能改变
    // double &ptr = &pi;           // 错误：ptr 是一个普通指针
    const double *cptr = &pi;       // 正确：cptr 可以指向一个双精度常量
    // *cptr = 42;                  // 错误：不能给 *cptr 赋值

    double dval = 3.14;             // dval 是一个双精度浮点数，它的值可以改变
    cptr = &dval;                   // 正确：但是不能通过 cptr 改变 dval 的值

    int errNumb = 0;
    int *const curErr = &errNumb;   // curErr 将一直指向 errNumb
    const double *const pip = &pi;  // pip 是一个指向常量对象的常量指针

    // *pip = 2.72;                 // 错误：pip 是一个指向常量的指针
    // 如果 curErr 所指的对象（也就是 errNumb）的值不为 0
    if (*curErr) {
        // errorHandler();
        *curErr = 0;                // 正确：把 curErr 所指的对象的值重置
    }
}